package br.edu.com1263.dao;

import java.util.Collection;

import javax.persistence.Query;

import br.edu.com1263.model.AvaliacaoProfessor;

public class AvaliacaoProfessorDAOImpl extends AbstractDAO implements AvaliacaoProfessorDAO{
	
	public AvaliacaoProfessorDAOImpl(){

}

	

	@Override
	public Collection<AvaliacaoProfessor> consultarTodos() {
		Query query = manager.createQuery("SELECT a FROM AvaliacaoProfessor a");
		return query.getResultList();
	}

	@Override
	public void salvar(AvaliacaoProfessor avaliado) {
		manager.persist(avaliado);
		
	}
	
	
	public void alterar(AvaliacaoProfessor avaliado) {
		manager.merge(avaliado);
	}
    
    public void remover(AvaliacaoProfessor avaliado) {
		manager.remove(avaliado);
	}

	@Override
	public AvaliacaoProfessor consultar(Long id) {
		return manager.find(AvaliacaoProfessor.class, id);
	}



	@Override
	public AvaliacaoProfessor consultarPostado(Long idPostado) {
		Query query = manager.createQuery("SELECT a FROM AvaliacaoProfessor a WHERE a.postado.id = :idPostado ");
		query.setParameter("idPostado", idPostado);

		try {
		Object o = query.getSingleResult();
		if (o != null)
			return (AvaliacaoProfessor) o;
		}
		catch (Exception e) {
			return null;
		}
		return null;
	}



	@Override
	public Collection<AvaliacaoProfessor> consultarProfessorTarefa(Long idProfessor, Long idTarefa) {
		Query query = manager.createQuery("SELECT a FROM AvaliacaoProfessor a WHERE a.professor.id = :idProfessor AND a.postado.tarefa.id = :idTarefa ");
		query.setParameter("idProfessor", idProfessor);
		query.setParameter("idTarefa", idTarefa);

		return query.getResultList();
	}

}
